身為一個工程師,只會寫軟體是不夠的,我們在嵌入式開發中必須認識硬體和韌體同時具備才算一個完整的產品。我們需要知道開發版的硬體,才能加快開發的速度。
在這裡我使用的是 NUCLEO-L053R8
來做為範例,這塊主板是使用LQFP64封裝,兼具性能,功耗和功能考量。先來介紹開發板,NUCLEO 開發板的資料手冊,似乎兼容於多個MCU:
"NUCLEO-L053R8"後綴的L053R8代表板子的型號,命名規則的意義可以參考下表:
NUCLEO-XXYYRT | 描述(Description) | 範例:NUCLEO-L053R8 |
---|---|---|
XX | STM32 Arm Cortex MCU中的MCU系列 | STM32L0 Series |
YY | STM32系列產品線 | STM32L053 |
R | STM32封裝的引腳數 | 64 pins |
T | STM32 Flash memory 大小 8代表64 Kbytes, B代表128 Kbytes,C代表256 Kbytes,E代表512 Kbytes,G代表1 Mbyte,Z代表192 Kbytes | 64 Kbytes |
如果你用的不是跟我一樣的MCU,可以參考它第7頁有說明這塊電路板支援哪些MCU,或是上官網找碴,接腳功能可能會因不同的MCU而有所不同,使用前一定要確認一下自己的開發板的 IO。
這份文件也介紹了該開發板支援的MCU編號,IO腳以及一些電路圖,我們逐一介紹。
MU1724開發板採用LQFP64封裝的STM32微控制器,具備USB通訊LED(LD1),user LED(LD2),電源LED(LD3),自帶USER和RESET按鈕,ARDUINO®Uno V3連接(沒錯它可以當Arduino在用<稍後會提到),且共有3.3V,5V,7-12V三種電壓,同時具備ST-LINK/V2-1燒錄器,讓你不需外接燒錄器只需要一條USB線即可燒錄(不過你要外接燒錄器也是可啦~)。
左邊這塊就是我們這次會用到的板子,看起來一不小心就被你折成兩半,事實上它就是故意分成兩個區塊,上面那區就是STMicroelectronics 的燒錄器 ST-LINK/V2-1燒錄器,而下方則是我們的核心板。
之所以這樣設計是希望你開發完之後就折斷,就不再提供debegger,可以直接拿核心板去賣,畢竟不希望裡面的MCU被修改或是提取,被人拿去加以利用這樣。所以一般在真正產品販售的時候是不會含上面燒錄的部份的,一方面考慮到成本的問題,一方面也不希望使用者去做其他的東西。但當然也會面對未來怎麼修正的問題,未來有機會再慢慢跟各位講。
好吧,姑且先不論甚麼時候來折斷它,我們只要會看它的IO腳就沒問題,重點是要會用IO腳,因為平常我們開發用的幾乎都是用它的IO腳或是它提供的周邊了啊呵呵,前面不是說會提到這塊板子可以拿來當Arduino用嗎?沒錯!以NUCLEO 的腳位可以分為兩種,一種是 Arduino 相容腳位 (Arduino Connector),你可以直接接在Arduino的擴充板上直接使用,只用到一部分的腳位,另外一種是 Morpho 擴展排針 (Morpho extension header),用到所有的腳位。
完整的腳位資訊請參考:
相容於Arduino的腳位,你甚至可以直接插在Arduino擴充板上做使用都沒問題。
這是 STMicroelectronics 自己定義的腳位,可以使用所有STM32的IO,不用白不用嘛~
對我而言,Arduino算不上是一個devices,比較像system。Arduino的開發環境和編寫的語言都是經過簡化變得非常簡單而且直觀,對於初學者在微處理器級別的控制上非常簡單,並且對於那些非本科系踏進這門領域的表現非常出色。這是它的優勢,但同時必須付出的代價就是在性能、除錯(debugging)、可靠性(Reliability)和一些MCU更深層的用法有了限制。雖然現在已經可以對底層的暫存器進行讀取或是控制,但實際上那還是必須繞過Arduino的系統方塊。
如果單看MCU,Arduino的Atmega 328P就是一個不錯的單晶片,在周邊裝置和優化硬體運算的能力等等有更好的性能。就比如在早期你如果按了鍵盤上的數字1,那電腦要怎麼知道你按了數字1呢?就是CPU每隔一段時間就去問你,你有按數字1嗎?有的話就執行下一步的動作,沒有就離開。當然!我只是假設。今天如果不只有鍵盤,還有滑鼠、耳機越來越多東西,這樣的方法就會使CPU的負荷量過大,意味著你必須加快你的處理速度,否則只是花費更多時間在問問題。所以我們將這些外部設備進行改良,讓外部設備可以自己獨立運作,每當需要CPU對嵌入式系統進行更改(或處理某種任務)時,它會根據你所派發的命令去執行任務。從而釋放CPU去做更多有益處的事XD。
而STM32正是繼承了這些,然後添加了更多功能像是DMA,中斷優先級等等。由指揮官發布命令給將軍,再由將軍去指揮底下的部下們。處理器成了戰場上真正的指揮官,有更多時間去判斷當前局勢,分析戰況,從而打贏勝仗。因此,這確實大大提高了性能,這也是為甚麼有越多人選擇STM32當作Arduino使用,總結來說就是STM更便宜,速度更快,除錯更強大!
- STM32 Nucleo-64 boards (MB1136)資料手冊
https://www.st.com/resource/en/user_manual/dm00105823-stm32-nucleo-64-boards-mb1136-stmicroelectronics.pdf- STM32L053R8 datasheet
https://www.st.com/resource/en/datasheet/stm32l053r8.pdf- ARM Mbed官網介紹 - NUCLEO-L053R8
https://os.mbed.com/platforms/ST-Nucleo-L053R8/- STM32 官網介紹 - STM32L053R8
https://www.st.com/en/microcontrollers-microprocessors/stm32l053r8.html#overview
- 此開發板售價在臺幣1000元以下,讀者可於以下網站購得:
https://www.mouser.tw/
https://www.digikey.tw/
我好想睡覺